﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
using System.ServiceModel.Syndication;
using System.ServiceModel.Web;
using System.ServiceModel.Activation;

namespace PBDesk.FeedService.ServiceContracts
{
    [ServiceContract]
    [ServiceKnownType(typeof(Atom10FeedFormatter))]
    [ServiceKnownType(typeof(Rss20FeedFormatter))]
    public interface IPBDeskFeed
    {
        #region PBDesk.com Feeds
        
        [OperationContract]
        [WebGet(UriTemplate = "rss", BodyStyle = WebMessageBodyStyle.Bare)]
        SyndicationFeedFormatter PBDeskComFeeds();

        #endregion

        #region Tech News Feeds
        
        [OperationContract]
        [WebGet(UriTemplate = "TechNews/", BodyStyle = WebMessageBodyStyle.Bare)]
        SyndicationFeedFormatter TechNews();

        [OperationContract]
        [WebGet(UriTemplate = "TechNews/CSharp/", BodyStyle = WebMessageBodyStyle.Bare)]
        SyndicationFeedFormatter CSharpNews();

        [OperationContract]
        [WebGet(UriTemplate = "TechNews/vstudio/", BodyStyle = WebMessageBodyStyle.Bare)]
        SyndicationFeedFormatter VisualStudioNews();

        [OperationContract]
        [WebGet(UriTemplate = "TechNews/aspnet/", BodyStyle = WebMessageBodyStyle.Bare)]
        SyndicationFeedFormatter AspNetNews();

        [OperationContract]
        [WebGet(UriTemplate = "TechNews/vb/", BodyStyle = WebMessageBodyStyle.Bare)]
        SyndicationFeedFormatter VBNews();

        [OperationContract]
        [WebGet(UriTemplate = "TechNews/dotnet/", BodyStyle = WebMessageBodyStyle.Bare)]
        SyndicationFeedFormatter DotNetNews();

        [OperationContract]
        [WebGet(UriTemplate = "TechNews/umbraco/", BodyStyle = WebMessageBodyStyle.Bare)]
        SyndicationFeedFormatter UmbracoNews();

        #endregion

        #region Article Feeds
        
        [OperationContract]
        [WebGet(UriTemplate = "Articles/", BodyStyle = WebMessageBodyStyle.Bare)]
        SyndicationFeedFormatter FeaturedArticles();

        [OperationContract]
        [WebGet(UriTemplate = "Articles/CSharp/", BodyStyle = WebMessageBodyStyle.Bare)]
        SyndicationFeedFormatter CSharp_Articles();

        [OperationContract]
        [WebGet(UriTemplate = "Articles/CSharp/HowDoI/", BodyStyle = WebMessageBodyStyle.Bare)]
        SyndicationFeedFormatter CSharp_HowDoI();

        #endregion
    }
}
